Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

О мультизадачности (Свояк)
Author Message
Свояк
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sun Apr 16, 2006 1:27 am (написано за 6 минут 19 секунд)
   Post subject: О мультизадачности
Reply with quote

У меня небольшое затруднение. А дело вот в чём. Мой php-код должен запускать некоторую программу, но в случаи её долгой работы или зависания её необходимо отрубить. Если, предположим я пишу exec("myprogram.exe") или system("myprogram.exe"), то пока процесс не завершится ни одной строчки php-кода, который бы должен её вырубить, не будет выполнено. Что делать?
Back to top
Andrey Gurin
Участник форума



Joined: 24 May 2005
Posts: 183
Карма: 20
   поощрить/наказать

Location: Italy

PostPosted: Sun Apr 16, 2006 3:26 am (спустя 1 час 59 минут; написано за 4 минуты 1 секунду)
   Post subject:
Reply with quote

Moжно попробовать
Code (php): скопировать код в буфер обмена
exec (www.php.net/exec)('command params  2>>/dev/null 1>&2 &')
но это только для *nix

Вот тут, может, что-то
forum.dklab.ru/other/all/AtStartOfAScriptFromCronDoesNotWorkATrickExitHeaderLocation.html
forum.dklab.ru/php/heap/StreamsInPhp.html?highlight=%EC%ED%EE%E3%EE%EF%EE%F2%EE%F7%ED%2A+%EC%ED%EE%E3%EE%EF%EE%F2%EE%F7%ED%EE%F1%F2%FC
us3.php.net/pcntl
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Sun Apr 16, 2006 5:34 pm (спустя 14 часов 7 минут; написано за 26 секунд)
   Post subject:
Reply with quote

Andrey Gurin wrote:
Moжно попробовать Код (php): скопировать код в буфер обмена
exec('command params 2>>/dev/null 1>&2 &')
но это только для *nix
спасибо за совет, но мне бы поближе к винде
Back to top
Andrey Gurin
Участник форума



Joined: 24 May 2005
Posts: 183
Карма: 20
   поощрить/наказать

Location: Italy

PostPosted: Sun Apr 16, 2006 7:25 pm (спустя 1 час 50 минут; написано за 1 минуту 54 секунды)
   Post subject:
Reply with quote

Вы по ссылкам сходили? Там прямо говорится что в винде нет такой возможности... и я этому верю (-:
Back to top
View user's profile Send private message
Свояк
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sun Apr 16, 2006 10:19 pm (спустя 2 часа 54 минуты; написано за 49 секунд)
   Post subject:
Reply with quote

Andrey Gurin wrote:
Вы по ссылкам сходили? Там прямо говорится что в винде нет такой возможности... и я этому верю (-:
допустим, а запустить два процесса одновременно можно как-нибудь?
Back to top
Andrey Gurin
Участник форума



Joined: 24 May 2005
Posts: 183
Карма: 20
   поощрить/наказать

Location: Italy

PostPosted: Mon Apr 17, 2006 1:20 am (спустя 3 часа 56 секунд; написано за 2 минуты 30 секунд)
   Post subject:
Reply with quote

Можно.Например, открываете два окна в броузере, и из каждого запускаете по процессу... Только Вам ведь не это надо.
Back to top
View user's profile Send private message
Свояк
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Apr 18, 2006 1:50 am (спустя 1 день 29 минут; написано за 3 минуты 50 секунд)
   Post subject:
Reply with quote

Andrey Gurin wrote:
Можно.Например, открываете два окна в броузере, и из каждого запускаете по процессу... Только Вам ведь не это надо.
Да, это не то. Я тут узнал, что в Delphi есть возможность запустить приложение и дальше выполнять код, не дожидаясь завершения приложения. Наверное стоит написать обработчик на Delphi, а затем банальным exec() запустить его.
Да. Жаль только, что нельзя обойтись средствами php.
Back to top
Andrey Gurin
Участник форума



Joined: 24 May 2005
Posts: 183
Карма: 20
   поощрить/наказать

Location: Italy

PostPosted: Tue Apr 18, 2006 8:36 am (спустя 6 часов 45 минут; написано за 1 минуту 34 секунды)
   Post subject:
Reply with quote

Если есть такая возможность, то, скорее всего, это наилучший выход. Ну нету в пхп нормальной многопоточности. В нем и нормальное ООП еще не до конца доделали
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Tue Apr 18, 2006 10:38 pm (спустя 14 часов 1 минуту; написано за 17 секунд)
   Post subject:
Reply with quote

Andrey Gurin wrote:
Если есть такая возможность, то, скорее всего, это наилучший выход. Ну нету в пхп нормальной многопоточности. В нем и нормальное ООП еще не до конца доделали
так и сделаю
Back to top
reactorx
Участник форума



Joined: 28 Feb 2006
Posts: 111
Карма: 1
   поощрить/наказать

Location: RND

PostPosted: Sat Apr 22, 2006 3:22 pm (спустя 3 дня 16 часов 44 минуты; написано за 3 минуты 13 секунд)
   Post subject:
Reply with quote

можно изхитриться)
напиши два скрипта...
первый будет вызывать второй два раза...
второй будет запускать нужную тебе программу...
вызывай второй так...
создай соекет запули туда гет или пост...закрой соединение...
открой второе таким же способом...и повтори операцию...

совет. возникнут проблемы и вопросы по этому поводу копай регистр шутдаун функшин в пехепе мануале

П.С то что я тебе описал опробывал сам ... все работает!

П.П.С счастья вам люди)!
Back to top
View user's profile Send private message Send e-mail
Andrey Gurin
Участник форума



Joined: 24 May 2005
Posts: 183
Карма: 20
   поощрить/наказать

Location: Italy

PostPosted: Sat Apr 22, 2006 8:01 pm (спустя 4 часа 39 минут; написано за 6 минут 36 секунд)
   Post subject:
Reply with quote

reactorx
Насколько я понимаю, проблема не в том чтобы запустить нужную программу, а в том чтобы ее убить в нужный момент и сообщить юзеру "извините, но не вышло...". И тогда описанный Вами способ не подходит.

Свояк
Но, может быть имеет смысл сделать вот как, загружаете страницу, после чего посредством: dklab.ru/lib/Subsys_JsHttpRequest/
запрашиваете скрипт пхп который запустит программу и ставите нужный timeout, если ответ пришел до истечения выделенного срока, подгружаете нужные данные прямо на страницу, в противном случае сообщаете что "Упс! Вот блин!". А скрипт сам по себе на сервере отработает и помрет. И юзеру не придется смотреть на белую страницу.
Back to top
View user's profile Send private message
reactorx
Участник форума



Joined: 28 Feb 2006
Posts: 111
Карма: 1
   поощрить/наказать

Location: RND

PostPosted: Sat Apr 22, 2006 8:14 pm (спустя 12 минут; написано за 1 минуту 41 секунду)
   Post subject:
Reply with quote

ну почему же не попрет)))
в пехепе есть вроде как что то типа терминэйт процесса...
и получить пид текущего пехепе процесса можно)
зная пид родителя можно получить и пид дочернего процесса)
собственно грохайте сначала дочерний потом и родителя (хотя он и сам отвалится)
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML